
昨天講的是讓一個 AI 審查另一個 AI 的規格。
這篇查審驗收的工具換成我自己的耳朵。
戰鬥音效最後是有做出來的,發牌、出牌、受擊、護甲、揮劍、勝利,該有的都有。
但老實說,我對最後的聲音並不太滿意。
問題是,做到這裡,我也不知道還能怎麼改。
我不是音效師,也沒有受過聲音設計的訓練。以前做 App 時,畫面不好看,我至少還知道可以調顏色、間距、字體;但音效「不好聽」到底要改哪裡,很多時候只能靠感覺。
所以這次我讓 Claude 幫忙分析。
AI 可以把聲音拆成一堆數字,再根據這些數字分析聲音的特徵。這確實讓我第一次有辦法從另一個角度理解音效。
但做到後來,我也發現一個問題:
數字可以告訴我聲音是什麼樣子,卻不一定能告訴我這個聲音適不適合我的遊戲。
這次挑護甲音效,Claude 連續換了三個方向,每次的理由都講得很完整,最後還是被我一句聽感打回票。
也是從這幾次來回,我開始比較清楚:AI 可以帶我跨進一個原本完全不熟的領域,但跨進去之後,還是會遇到自己的能力邊界。
專案的視覺打磨做完一輪之後,開始補音效。
發牌、收牌、出牌、命中、魔王攻擊,一項一項接上去。
Claude 找了幾包 CC0 素材,也寫了自動化測試,確認「該響的時候有響」。
程式面看起來都沒問題。
裝到手機上實際玩,我的第一句回饋卻是:
「護甲增加的聲音不太好,它聽起來像打擊,但護甲是增益的感覺。」
這句話其實很難直接翻成程式可以檢查的條件。
「打擊」跟「增益」的差別,不是某個聲音參數超過多少,而是聽起來給人的感覺不同。
接下來三次挑音效,就一直撞在這個問題上。
Claude 沒辦法真的聽聲音,所以先寫了一段 Python 量波形。
原本配的是 Impact Sounds 裡的金屬板撞擊聲。
量完之後,這個聲音的起音時間是 0 毫秒,也就是一開始就瞬間到最大音量。
再看頻譜質心,可以粗略理解成「音色偏亮還是偏暗」的一個數字。這段聲音前後比較下來,後段只剩前段的 0.16~0.26 倍。
也就是:
一開始又亮又響,接著快速黯淡下去。
這很符合「敲一下金屬板,然後餘音慢慢消失」的聲音形狀。
Claude 的分析沒有錯。
但這個分析反而確認了一件事:素材本身沒有挑壞,是方向從一開始就不對。
因為我要的不是「護甲被敲了一下」,而是「護甲增加了」。
既然起音太快是問題,Claude 換了一個起音比較慢的方向。
它從介面音效包裡找到一組往上升的掃頻聲。
這次的起音時間大約 220~340 毫秒,頻譜質心在後段比前段亮了 1.4~2.7 倍。
從數字來看,這是一段逐漸變亮、變強的電子音,確實比較接近「獲得了什麼」的感覺。
裝上去聽完,我又提出一個新的要求:
「護甲聲要有自己的聲音,只是換成跟戰意高漲同一種風格的聲音。」
這裡又出現另一個問題。
「戰意高漲」那張牌打出去,用的是比較木質、比較柔和的桌遊音效。
Claude 這次解決了「不像打擊聲」這個問題,卻沒有考慮整個專案已經建立起來的聲音風格。
新音效不是自己聽起來合理就好,還要跟其他音效放在一起時,聽起來像是同一款遊戲。
這件事情沒有辦法只從一個音檔的波形裡讀出來。
既然要跟「戰意高漲」使用同一種桌遊質感,Claude 就從同一包素材裡繼續找。
護甲的核心意象是「累積」。
籌碼一枚一枚疊起來,也是累積。
所以這次換成賭場音效包裡的疊籌碼聲。
起音只有 5 毫秒,聲音短促又清脆。
意象貼切,風格也跟前面的音效比較接近。
理由聽起來非常完整。
我聽完只回了一句:
「有點像漬牙聲。」
回頭去量那組籌碼聲,答案也真的藏在數字裡。
它的頻譜質心大約集中在 7 kHz,偏高頻,再加上只有 5 毫秒的快速起音,確實容易形成急促、尖銳的聽感。
問題是,這些數字在挑選當下其實就算得出來。
只是當時的判斷標準只有兩個:
沒有人檢查第三件事:
會不會刺耳?
所以這三次其實不是分析算錯了。
每一次分析都可以找到合理的數據來支持當下的選擇,但每一次都只處理了其中一個問題。
三次都落空之後,我最後決定:
護甲不要自己的專屬音效。
出護甲牌,以及魔王舉盾,都直接沿用「戰意高漲」那個放牌聲。
回頭看,這反而是最穩的答案。
一個已經聽過、確定不奇怪的聲音,比一個「數據上說得通」但沒有人實際驗證過的新聲音可靠。
後來挑攻擊牌的揮擊聲,又遇到類似的問題。
原本配的是小刀摩擦和砍劈的聲音。
我問了一句:
「真正的揮劍聲有適合的嗎?」
這次 Claude 沒有直接挑一個看起來最像的聲音。
它先換了一個問題:
手邊這些素材裡,根本有沒有真正適合的東西?
揮劍聲本質上比較接近氣流劃過的聲音,頻譜應該比較像噪音,而不是有明確音高的樂音。
所以它量了手邊四包素材,一共 326 個檔案的頻譜平坦度。
這個數字越接近 1,越像噪音;越接近 0,越像有明確音高的聲音。
結果目前使用的那組全部落在 0.000~0.008。
這至少可以確認一件事:
手邊這批素材確實比較像有音高的摩擦聲,不是真正的氣流聲。
所以這次分析不是拿來回答「哪一個最好聽」,而是先確認:
是不是根本找錯素材來源了?
確認沒有合適的素材之後,就換了新的來源。
這次 Claude 也沒有直接替我選一個。
它把 33 個候選音效整理成我可以直接播放的檔案,再附上量到的特性與預測,讓我自己聽。
其中兩組我聽起來像「磨刀聲」,剩下那組一次就選中了。
這次的分析,反而真的幫上了忙。
後來找勝利和失敗音效,又出現一次類似的問題。
Claude 先照直覺找了 RPG 風格的勝利號角。
我聽完只回了一句:
「都比較像 RPG 的聲音。」
這次它沒有再分析音檔,試著找另一個「更合理」的方向。
而是直接問我:
你到底想要什麼風格?
我選的是:
這個答案不是分析音檔可以算出來的。
因為《異世界救援》的世界觀是能源危機。
魔王被打倒,代表城鎮恢復供電。
所以勝利音效應該往「電力恢復」的方向走。
要理解這件事,得先知道遊戲在講什麼。單靠音檔本身的物理特徵,沒辦法推導出這個答案。
同一輪討論裡,我後來自己在同一批科幻音效素材裡翻到一個很有電力傳送感的聲音,直接拿去做城鎮供電清單的視覺效果配音。
這反而讓我更確定一件事:
方向講清楚之後,找素材會容易很多。
三次護甲聲,再加上揮劍聲和勝利音效這幾次經驗,讓我比較清楚量化分析適合放在哪裡。
波形分析能回答的,是聲音客觀的物理性質。
例如:
這些數字很適合拿來排除明顯不對的方向。
例如第一次的金屬撞擊聲,起音瞬間到最大音量,這確實可以幫忙確認它比較像打擊聲。
但分析回答不了:
籌碼聲大約 7 kHz、起音只有 5 毫秒,這些數字可以在事後解釋「為什麼聽起來很尖」。
但當初真正做決定的那一刻,問題不是「它的頻譜質心是多少」,而是:
我聽了覺得刺耳。
這兩件事不能混在一起。
這次三個護甲音效都猜錯之後,我後來比較固定的做法是:
如果是可以量化的問題,就讓 AI 量。
如果是純粹的聽感,就先把方向講清楚,或者把候選做出來讓我自己聽。
不要讓 AI 拿一堆分析數字,替我回答一個只有耳朵才能回答的問題。
分析工具最適合的位置,是先幫忙把明顯錯的方向篩掉。
最後那一步,還是得留給真正能聽見的人。
這次也讓我重新認識一件事:
音效其實是一個很專業的工作。
Vibe Coding 可以讓我這個原本沒有做遊戲經驗的人,把發牌、受擊、護甲、揮劍、勝利這些音效一個個接進遊戲裡,也可以讓 AI 幫忙找素材、分析波形、整理候選。
但「把音效接進去」跟「把音效做好」是兩回事。
像這次護甲音效,我可以告訴 AI「我要有增益感」、「要跟戰意高漲同一種風格」,AI 也可以幫我把聲音拆成起音時間、頻譜質心等數據。
可是最後那個「聽起來對不對」,還是很難只靠數字解決。
所以這也是 Vibe Coding 會遇到的一個界線:
AI 可以幫一個人跨進原本不熟的領域,但不代表這個領域的專業就消失了。
如果之後有機會,我還是會希望找專業的音效師一起做。
這次自己做音效,比較像是先把遊戲需要的聲音做出來、理解問題在哪裡;真正要把聲音品質再往上推,專業的人還是有價值。
明天 Day 29,猜錯的代價更高。
這一次 AI 不只判斷錯,還替自己的錯找到一套有真實文獻佐證、連我都被說服的解釋。
💬 你有沒有遇過 AI 給了一個「數據上說得通」的建議,實際體驗卻完全不對?後來是怎麼發現落差在哪的?歡迎留言聊聊。